/*
 * Copyright (C) 2012 POAS.VSTU
 */

package model;

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;

/**
 * Стопка карт
 */
public class CardPile implements Iterable<Card> {


    /** Контейнер с картами */
    protected ArrayList<Card> mCards = new ArrayList<Card>();

    /**  Размер стопки карт */
    public int size() {
        return mCards.size();
    }

    /**
     * Достает верхнюю карту из стопки
     * @return Card - карта из стопки
     */
    public Card pop() {

        //если в стопке нет карт, то и доставать нечего
        if(size() == 0){
            return null;
        }

        int lastIndex = size()-1;
        Card card = mCards.get(lastIndex);
        mCards.remove(lastIndex);
        return card;
    }

    /**
     * Достает все карты из стопки
     * @return ArrayList<Card> - карты из стопки
     */
    public ArrayList<Card> popAll() {

        ArrayList<Card> other = (ArrayList<Card>) mCards.clone();
        return other;
    }
    /**
     * Помещает карту в стопку
     * @param card - карта, помещаемая в стопку
     * @return boolean - флаг об успешности/провале добавления карты в стопку
     */
    public boolean push(Card card) {

        mCards.add(card);
        return false;
    }

    /**
     * Добавляет в стопку n-e количество карт
     * @param cards - карты, помещаемые в стопку
     * @return boolean - флаг об успешности/провале добавления карт в стопку
     */
    public boolean push(List<Card> cards) {
        return true;
    }

    /** Очистка стопки */
    public void clear() {
        mCards.clear();
    }

    /** Возвращает итератор на стопку карт*/
    public Iterator<Card> iterator() {
        return mCards.iterator();
    }
}